package controllers;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import models.Cliente;
import repository.IRepositorioCliente;
import repository.RepositorioCliente;

public class ControllerCliente {

	private IRepositorioCliente clienteRepositorio;

	// GETs e SETs do clienteRepositorio
	// --------------------------------------------------------------------
	public IRepositorioCliente getClienteRepositorio() {
		return clienteRepositorio;
	}

	public void setClienteRepositorio(IRepositorioCliente clienteRepositorio) {
		this.clienteRepositorio = clienteRepositorio;
	}

	// -------------------------------------------------------------------
	public ControllerCliente(RepositorioCliente repositorioCliente) {
		this.setClienteRepositorio(repositorioCliente);
	}

	// -------------------------------------------------------------------
	public boolean inserir(Cliente cliente) throws SQLException {

		String dataSistema = new SimpleDateFormat("dd/MM/yyyy")
				.format(new Date());
		String horaSistema = new SimpleDateFormat("HH:mm").format(new Date());

		cliente.setDataCadastro(dataSistema);
		cliente.setDataHoraModificacao(dataSistema + " " + horaSistema);
		cliente.setHoraCadastro(horaSistema);

		return clienteRepositorio.inserirCliente(cliente);
	}

	// -------------------------------------------------------------------
	public boolean remover(Cliente cliente) throws SQLException {
		return clienteRepositorio.removerCliente(cliente);
	}

	// -------------------------------------------------------------------
	public boolean atualizar(Cliente cliente) throws SQLException {

		String dataSistema = new SimpleDateFormat("dd/MM/yyyy")
				.format(new Date());
		String horaSistema = new SimpleDateFormat("HH:mm").format(new Date());

		cliente.setDataHoraModificacao(dataSistema + " " + horaSistema);

		return clienteRepositorio.atualizarCliente(cliente);
	}

	// -------------------------------------------------------------------
	public List<Cliente> listar() throws SQLException {
		return clienteRepositorio.listarCliente();
	}

	// -------------------------------------------------------------------
	public List<Cliente> buscarApolice(String chave) throws SQLException {
		return clienteRepositorio.buscarClienteApolice(chave);
	}

	// -------------------------------------------------------------------
	public List<Cliente> buscarCI(String chave) throws SQLException {
		return clienteRepositorio.buscarClienteCI(chave);
	}

	// -------------------------------------------------------------------
	public List<Cliente> buscarInicioVigencia(String chave) throws SQLException {
		return clienteRepositorio.buscarClienteInicioVigencia(chave);
	}

	// -------------------------------------------------------------------
	public List<Cliente> buscarTerminoVigencia(String chave)
			throws SQLException {
		return clienteRepositorio.buscarClienteTerminoVigencia(chave);
	}

	// -------------------------------------------------------------------
	public int ultimoId() throws SQLException {
		return clienteRepositorio.ultimoIdCliente();
	}
	// -------------------------------------------------------------------
	public boolean verificarApolice(String chave) throws SQLException {
		return clienteRepositorio.verificarApolice(chave);
	}

	// -------------------------------------------------------------------
	public boolean verificarCI(String chave) throws SQLException {
		return clienteRepositorio.verificarCI(chave);
	}

	// -------------------------------------------------------------------
	public List<Cliente> faltaDadosCIApolicePlacaRENAVAN() throws SQLException {
		return clienteRepositorio.faltaDadosCIApolicePlacaRENAVAN();
	}

	// -------------------------------------------------------------------
	public Cliente retornaCliente(int id) throws SQLException {
		return clienteRepositorio.retornaCliente(id);
	}

	// -------------------------------------------------------------------
	public List<Cliente> DatasTerminoVigencia() throws SQLException {
		return clienteRepositorio.DatasTerminoVigencia();
	}

	// -------------------------------------------------------------------
	// Bem Segurado
	// -------------------------------------------------------------------

	public List<Cliente> buscarBemSeguradoChassi(String chave)
			throws SQLException {
		return clienteRepositorio.buscarBemSeguradoChassi(chave);
	}

	// -------------------------------------------------------------------

	public List<Cliente> buscarBemSeguradoPlaca(String chave)
			throws SQLException {
		return clienteRepositorio.buscarBemSeguradoPlaca(chave);
	}

	// -------------------------------------------------------------------

	public List<Cliente> buscarBemSeguradoVeiculo(String chave)
			throws SQLException {
		return clienteRepositorio.buscarBemSeguradoVeiculo(chave);
	}

	// -------------------------------------------------------------------

	public boolean verificarChassi(String chave) throws SQLException {
		return clienteRepositorio.verificarChassi(chave);
	}

	// -------------------------------------------------------------------

	public boolean verificarRENAVAN(String chave) throws SQLException {

		return clienteRepositorio.verificarRENAVAN(chave);
	}

	// -------------------------------------------------------------------

	public boolean verificarPlaca(String chave) throws SQLException {
		return clienteRepositorio.verificarPlaca(chave);
	}
	// -------------------------------------------------------------------

	// Segurado
	// -------------------------------------------------------------------
	public List<Cliente> buscarSeguradoCNH(String chave) throws SQLException {
		return clienteRepositorio.buscarSeguradoCNH(chave);
	}

	// -------------------------------------------------------------------

	public List<Cliente> buscarSeguradoProponente(String chave)
			throws SQLException {
		return clienteRepositorio.buscarSeguradoProponente(chave);
	}

	// -------------------------------------------------------------------

	public List<Cliente> buscarSeguradoCPF(String chave) throws SQLException {
		return clienteRepositorio.buscarSeguradoCPF(chave);
	}

	// -------------------------------------------------------------------

	public List<Cliente> aniversariantes() throws SQLException {
		return clienteRepositorio.aniversariantes();
	}
	// -------------------------------------------------------------------
}
